<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <base href="${pageContext.request.contextPath}/">
    <meta charset="UTF-8">
    <link href="bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet"/>
    <link rel="stylesheet" type="text/css" href="bootstrap-table/bootstrap-table.min.css">
    <link rel="stylesheet" type="text/css" href="bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
</head>
<body>
<%--页面导航--%>
<ol class="breadcrumb">
    <li><a href="page/dictionary/index">首页</a></li>
    <li><a href="page/dictionary/index">数据字典表</a></li>
    <li class="active">字典值</li>
</ol>
<div>
    <div style="position: relative; left: 30px; top: -10px;">
        <div class="page-header">
            <h3>字典类型列表</h3>
        </div>
    </div>
</div>
<%--条件查询表单--%>
<div class="panel-body">
    <form id="searchForm" class="form-inline">
        <div class="form-group">
            <input type="text" id="name" placeholder="名称" class="form-control">
        </div>
        <div class="form-group">
            <button type="button" class="btn btn-default" onclick="$('#tab').bootstrapTable('refresh')"><span
                    class="glyphicon glyphicon-search"></span>搜索
            </button>
            <%--点击清空,并重新搜索--%>
            <button type="button" class="btn btn-default"
                    onclick="$('#searchForm')[0].reset();$('#tab').bootstrapTable('refresh')"><span
                    class="glyphicon glyphicon-refresh"></span>清空
            </button>
        </div>
        <div class="form-group">
            <button type="button" class="btn btn-primary" onclick="$('#saveWindow').modal('show');"><span
                    class="glyphicon glyphicon-plus"></span>新增
            </button>
            <button type="button" class="btn btn-danger" onclick="removeBatch()"><span
                    class="glyphicon glyphicon-trash"></span>批量删除
            </button>
        </div>
    </form>

    <table id="tab" class="table table-hover table-striped table-bordered"><%--异步显示--%></table>
</div>

<%--新增用户模态框--%>
<div class="modal fade" id="saveWindow" role="dialog">
    <div class="modal-dialog" role="document" style="width: 90%;">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">×</span>
                </button>
                <h2 class="modal-title" style="text-align: center">新增字典类型</h2>
            </div>
            <div class="modal-body">

                <form class="form-horizontal" role="form" id="saveForm">

                    <div class="form-group">
                        <label for="create-code" class="col-sm-5 control-label">编码<span
                                style="font-size: 15px; color: red;">*</span></label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="create-code">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="create-name" class="col-sm-5 control-label">名称</label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="create-name">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="create-description" class="col-sm-5 control-label">描述</label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="create-description">
                        </div>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                <button type="button" class="btn btn-primary" onclick="save()">保存</button>
            </div>
        </div>
    </div>
</div>


<%--修改用户模态框--%>
<div class="modal fade" id="editWindow" role="dialog">
    <div class="modal-dialog" role="document" style="width: 90%;">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">×</span>
                </button>
                <h4 class="modal-title" style="text-align: center">修改字典类型</h4>
            </div>
            <div class="modal-body">

                <form class="form-horizontal" role="form" id="editForm">
                    <div class="form-group">
                        <label for="update-code" class="col-sm-2 control-label">编码<span
                                style="font-size: 15px; color: red;">*</span></label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="update-code" readonly="true">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="update-name" class="col-sm-2 control-label">名称</label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="update-name">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="update-description" class="col-sm-2 control-label">描述</label>
                        <div class="col-sm-10" style="width: 300px;">
                            <input type="text" class="form-control" id="update-description">
                        </div>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
                <button type="button" class="btn btn-primary" onclick="edit()">保存</button>
            </div>
        </div>
    </div>
</div>



<%--<div class="btn-toolbar" role="toolbar" style="background-color: #F7F7F7; height: 50px; position: relative;left: 30px;">
    <div class="btn-group" style="position: relative; : 18%;">
        <button type="button" class="btn btn-primary" onclick="window.location.href='save.html'"><span
                class="glyphicon glyphicon-plus"></span> 创建
        </button>
        <button type="button" class="btn btn-default" onclick="window.location.href='edit.html'"><span
                class="glyphicon glyphicon-edit"></span> 编辑
        </button>
        <button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-minus"></span> 删除</button>
    </div>
</div>--%>
<%--<div style="position: relative; left: 30px; top: 20px;">
    <table class="table table-hover">
        <thead>
        <tr style="color: #B3B3B3;">
            <td><input type="checkbox"/></td>
            <td>序号</td>
            <td>编码</td>
            <td>名称</td>
            <td>描述</td>
        </tr>
        </thead>
        <tbody>
        <tr class="active">
            <td><input type="checkbox"/></td>
            <td>1</td>
            <td>sex</td>
            <td>性别</td>
            <td>性别包括男和女</td>
        </tr>
        </tbody>
    </table>
</div>--%>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
<!--bootstrap-table核心js-->
<script src="/bootstrap-table/bootstrap-table.js"></script>
<!--bootstrap-table中文语言包-->
<script src="/bootstrap-table/locale/bootstrap-table-zh-CN.js"></script>
<!--bootstrap-datetimepicker核心js-->
<script type="text/javascript" src="bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<!--bootstrap-datetimepicker中文语言包-->
<script type="text/javascript" src="bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script type="text/javascript">
    /*页面加载函数*/
    $(function () {
        initTable();
        $('#saveWindow').on('hidden.bs.modal', function () {
            $('#saveForm')[0].reset();
        });

        $('#editWindow').on('hidden.bs.modal', function () {
            $('#editForm')[0].reset();
        })
    });

    //初始化表格
    function initTable() {
        //配置异步表格
        $('#tab').bootstrapTable({
            // height: 300,
            method: 'get',
            url: '/dicType/page',
            //开启分页
            pagination: true,
            //设置分页显示的位置,server服务端分页,local为前端数据分页
            sidePagination: 'server',
            //每页条数
            pageSize: 5,
            //设置每页多少条数据显示选项,能全部显示完,就不会出现后面的选项
            pageList: [5, 10, 15, 20],
//上一页和下一页
            paginationPreText: '上一页',
            paginationNextText: '下一页',
            //查询时的参数
            //原本需要limit,表示查询时的起始偏移量和每页条数,但是用的是分页插件pagehelper,需要的是当前页面数和每页条数,所以给个空串
            queryParamsType: '',
            queryParams: function (params) {
                //添加自定义请求参数,不用她们自带的
                //上面搜索框的id选择器
                params.name = $('#name').val();
                return params;
            },
            //处理响应的格式
            responseHandler: function (res) {
                //res就是响应的数据(code,messege,data)
                //如果响应的数据中code=0,那么说明是正常的响应,返回一个字面量对象,包含数据
                if (res.code == 0) {
                    return {
                        rows: res.data.list,
                        total: res.data.total
                    }
                }
            },
            //点击选中
            clickToSelect: true,
            //单选
            singleSelect: false,
            //工具栏
            toolbar: '#searchForm',
            //辅助功能
            showRefresh: true,
            showToggle: true,
            showFullscreen: true,
            //表格中的列描述
            columns: [
                {
                    checkbox: true
                }, {
                    title: '序号',
                    field: 'no',
                    halign: 'center',
                    formatter: function (value, row, index) {
                        //获取每页显⽰的数量
                        //var pageSize = $('#exampleTable').bootstrapTable('getOptions').pageSize;
                        // var pageSize =
                        //获取当前是第⼏页
                       // var pageNumber = $('#exampleTable').bootstrapTable('getOptions').pageNumber;
                        // 返回序号，注意是从开始的，所以要加上index+1
                        // return pageSize * (pageNumber - 1) + index + 1;
                        return index + 1;
                    }
                },
                {
                    title: '编码',
                    field: 'code',
                    //显示改为FALSE
                    // visible: false
                    halign: 'center'
                }, {
                    //列名
                    title: '名称',
                    //列数据：数据从数据对象获取
                    field: 'name',
                    //表头对其方式
                    halign: 'center'
                }, {
                    //列名
                    title: '描述',
                    //列数据：数据从数据对象获取
                    field: 'description',
                    //表头对其方式
                    halign: 'center'
                }, {
                    title: '操作',
                    // 表头对齐
                    halign: 'center',
                    //数据对齐方式
                    align: 'center',
                    formatter: function (value, row) {
                        return '<button type="button" class="btn btn-warning btn-xs" onclick="openEdit(\'' + row.code + '\')"><span class="glyphicon glyphicon-pencil"></span>编辑</button>' +
                            '&emsp;' + '<button type="button" class="btn btn-danger btn-xs" onclick="remove(\'' + row.code + '\')"><span class="glyphicon glyphicon-trash"></span>删除</button>';
                    }
                }
            ]
        });
    }

    //新增函数
    function save() {
        $.ajax('/dicType/save', {
            //请求方式
            type: 'post',
            //媒体类型改为application/json
            contentType: 'application/json',
            //将对象转为json字符串
            data: JSON.stringify({
                //拿到模态框里的值,向后台提交的名值对通过stringify方法,转成json字符串
                code: $('#create-code').val(),
                name: $('#create-name').val(),
                description: $('#create-description').val()
            }),
            beforeSend: function () {
                var code = $('#create-code').val();
                //js中的变量可放在if判断中，如果变量值为null,空字符串,undefined,0,NaN判断结果返回false
                if (!code) {
                    alert('编码不为空');
                    return false;
                }
            },
            success: function (res) {
                if (res.code == 0) {
                    alert('添加成功');
                    //如果状态码为0,那么刷新表格
                    $('#tab').bootstrapTable('refresh');
                    //隐藏模态框
                    $('#saveWindow').modal('hide');
                } else {
                    alert(res.message);
                }
            }

        })
    }

    //修改回调数据
    //打开修改页面
    function openEdit(code) {
        $.ajax('/dicType/find/' + code, {
            type: 'get',
            success: function (res) {
                if (res.code == 0) {
                    //通过响应的数据取出来,回显到模态框里,最后调用模态框显示渲染模态框
                    //与新增唯一不一样,需要主键id条件查询修改
                    $('#update-code').val(res.data.code);
                    $('#update-name').val(res.data.name);
                    $('#update-description').val(res.data.description);
                    $('#editWindow').modal('show');
                }
            }
        })
    }

    //修改函数
    function edit() {
        $.ajax('/dicType/edit', {
            //请求方式
            type: 'put',
            //媒体类型改为application/json
            contentType: 'application/json',
            //将对象转为json字符串
            data: JSON.stringify({
                //拿到模态框里的值,向后台提交的名值对通过stringify方法,转成json字符串
                code: $('#update-code').val(),
                description: $('#update-description').val(),
                name: $('#update-name').val()
            }),
            beforeSend: function () {
                var code = $('#update-code').val();
                //js中的变量可放在if判断中，如果变量值为null,空字符串,undefined,0,NaN判断结果返回false
                if (!code) {
                    alert('编码不为空');
                    return false;
                }
            },
            success: function (res) {
                if (res.code == 0) {
                    alert('修改成功');
                    //如果状态码为0,那么刷新表格
                    $('#tab').bootstrapTable('refresh');
                    //隐藏模态框
                    $('#editWindow').modal('hide');
                } else {
                    alert(res.message);
                }
            }

        })
    }

    //根据主键id单删操作,后端必须有配套的根据主键删除的方法和sql语句
    function remove(id) {
        /*点击删除按钮后,从表格中获取当前数据的id,走到这个remove方法,弹框,确定删除则进入controller类的remove方法,请求类型为delete,如果成功响应并且响应码code为零,弹出删除成功,并用bootstrapTable的refresh为id选择器为tab 的动态表格刷新*/
        if (confirm('确定删除吗?')) {
            $.ajax('/dicType/remove/' + id, {
                type: 'delete',
                success: function (res) {
                    if (res.code == 0) {
                        alert('删除成功');
                        $('#tab').bootstrapTable('refresh');
                    } else {
                        alert(res.message);
                    }
                }
            });
        }
    }

    //批量删除操作
    function removeBatch() {
        //首先获取用户的多选或单选,选中的哪几行
        //表示用户选中哪些行了
        var rows = $('#tab').bootstrapTable('getSelections');
        // console.log(rows);
        //判断如果点击批量删除按钮,但是没有选中,那么提醒用户选中
        if (rows.length == 0) {
            alert('请选择要删除的用户');
        } else {
            if (!confirm('确定要删除这些数据吗?')) {
                return;
            }
            //需要的是id而不是具体内容所以
            //声明一个存放id的数组,把数据中的empno遍历出来放入IDS数组中
            var ids = [];
            $.each(rows, function () {
                ids.push(this.code);
            });
            console.log(ids)
            // 然后发送异步请求开始删除
            $.ajax('/dicType/remove', {
                /*
                因为delete请求不能携带参数,所以用post请求,模拟成_method:delete请求
                type:'delete',
                data: {
                    //join是把数组所有数据拼成逗号间隔的字符串
                    ids:ids.join()
                },*/
                type: 'post',
                data: {
                    _method: 'delete',
                    //join是把数组所有数据拼成逗号间隔的字符串
                    ids: ids.join()
                },
                //回调函数
                success: function (res) {
                    if (res.code == 0) {
                        alert('删除成功');
                        $('#tab').bootstrapTable('refresh');
                    } else {
                        alert(res.message);
                    }
                }
            });
        }
    }
</script>
</body>
</html>